package leetCode.array_and_string;

import java.util.Arrays;

/**
 * 功能：寻找数组的中心索引
 * 作者：lc
 * 日期：2025/2/14 2:12
 */
public class Main1991 {

    /**
     * 解法一
     * 假设左边元素和=sum，数组总和为total，右边元素和=total-sum-nums[i],nums[i]为中心元素
     * 当sum=total-sum-nums[i]时，nums[i]为中心元素
     * @param nums
     * @return
     */
    public static int pivotIndex1(int[] nums) {
        int total = Arrays.stream(nums).sum();
        int sum=0;
        for (int i = 0; i < nums.length; i++) {
            // int sum= Arrays.stream(nums,0,i).sum();
            if (sum * 2 + nums[i] == total) {
                return i;
            }
            sum+=nums[i];
        }
        return -1;
    }

    /**
     * 解法二
     * 定义左边为leftSum=0，右边为rightSum=total，指针右移动，当rightSum==leftSum时，就找到了中心索引
     * @param nums
     * @return
     */
    public static int pivotIndex2(int[] nums) {
        int rightSum = Arrays.stream(nums).sum();
        int leftSum = 0;
        for (int i = 0; i < nums.length; i++) {
            leftSum+= nums[i];
            if (leftSum == rightSum) {
                return i;
            }
            rightSum -=nums[i];

        }
        return -1;
    }

}


